// src/store/permission.store.ts
import type { RouteRecordRaw } from "vue-router";
import { constantRoutes } from "@/router"; // 确保能正确导入
import { store } from "@/store";

export const usePermissionStore = defineStore("permission", () => {
  const routes = ref<RouteRecordRaw[]>([]); // 存储所有路由
  const mixedLayoutLeftRoutes = ref<RouteRecordRaw[]>([]); // 混合模式左侧菜单
  const isRoutesLoaded = ref(false); // 路由是否加载完成

  /**
   * 初始化路由（使用静态路由，不依赖后端）
   */
  function generateRoutes() {
    return new Promise<RouteRecordRaw[]>((resolve) => {
      // 直接使用静态路由作为侧边栏数据
      routes.value = [...constantRoutes];
      isRoutesLoaded.value = true; // 标记路由加载完成
      resolve(constantRoutes);
    });
  }

  /**
   * 根据父路径设置混合模式左侧菜单（如需混合布局可保留）
   */
  const setMixedLayoutLeftRoutes = (parentPath: string) => {
    const matchedItem = routes.value.find((item) => item.path === parentPath);
    if (matchedItem && matchedItem.children) {
      mixedLayoutLeftRoutes.value = matchedItem.children;
    }
  };

  /**
   * 重置路由（清空路由数据）
   */
  const resetRouter = () => {
    routes.value = [];
    mixedLayoutLeftRoutes.value = [];
    isRoutesLoaded.value = false;
  };

  return {
    routes,
    mixedLayoutLeftRoutes,
    isRoutesLoaded,
    generateRoutes,
    setMixedLayoutLeftRoutes,
    resetRouter,
  };
});

// 不需要动态路由时，可删除 parseDynamicRoutes 方法

export function usePermissionStoreHook() {
  return usePermissionStore(store);
}
